//package com.jkoss.wine.warehouse.service.impl;
//
//import com.jkoss.common.util.CommonUtil;
//import com.jkoss.wine.merchantOrder.entity.HqProductInventory;
//import com.jkoss.wine.merchantOrder.mapper.HqProductInventoryMapper;
//import com.jkoss.wine.warehouse.entity.WareInoutOrder;
//import com.jkoss.wine.warehouse.entity.WareInoutOrderDetails;
//import com.jkoss.wine.warehouse.entity.WareInventory;
//import com.jkoss.wine.warehouse.mapper.WareInoutOrderDetailsMapper;
//import com.jkoss.wine.warehouse.mapper.WareInoutOrderMapper;
//import com.jkoss.wine.warehouse.mapper.WareInventoryMapper;
//import com.jkoss.wine.warehouse.service.IWareInoutOrderService;
//import com.baomidou.mybatisplus.mapper.Condition;
//import com.baomidou.mybatisplus.mapper.SqlHelper;
//import com.baomidou.mybatisplus.mapper.Wrapper;
//import com.baomidou.mybatisplus.plugins.Page;
//import com.baomidou.mybatisplus.service.impl.ServiceImpl;
//
//import java.util.ArrayList;
//import java.util.List;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
///**
// * 出入库单 服务实现类
// * 
// * @Author Jason
// * @Version 1.0, 2018-10-21
// * @See
// * @Since com.jkoss.wine.warehouse.service.impl
// * @Description: TODO
// */
//@Service
//public class WareInoutOrderServiceImpl extends ServiceImpl<WareInoutOrderMapper, WareInoutOrder> implements IWareInoutOrderService {
//	@Autowired
//	private HqProductInventoryMapper hqProductInventoryMapper;
//	@Autowired
//	private WareInventoryMapper wareInventoryMapper;
//	@Autowired
//	private WareInoutOrderDetailsMapper wareInoutOrderDetailsMapper;
//
//	@Override
//	public Page selectVoByioid(Page page, Wrapper wrapper) {
//		SqlHelper.fillWrapper(page, wrapper);
//		page.setRecords(baseMapper.selectVoByioid(page, wrapper));
//		return page;
//	}
//
//	@Override
//	public boolean insertInoutOrder(WareInoutOrder inout_order, String whid[], String pnid[], String amut[]) throws Exception {
//		// 对订单详情表的操作
//		if (!retBool(baseMapper.insert(inout_order))) {
//			throw new Exception("添加商品出入库单失败");
//		}
//		// 对库存表的操作
//		List<WareInoutOrderDetails> list = new ArrayList<>();
//		// 对库存表的操作
//		List<WareInventory> list2 = new ArrayList<>();
//		for (int j = 0; j < whid.length; j++) {
//			if (!CommonUtil.isBlank(amut[j])) {
//				WareInoutOrderDetails orderDetails = new WareInoutOrderDetails();
//				// 仓库id
//				orderDetails.setWhid(whid[j]);
//				// 商品规格id
//				orderDetails.setPnid(pnid[j]);
//				// 商品数量
//				orderDetails.setAmut(CommonUtil.int2(amut[j]));
//				// 进入库id
//				orderDetails.setIoid(inout_order.getId());
//				// 当前用户id
//				orderDetails.setOperator(inout_order.getOperator());
//				// 添加时间
//				orderDetails.setAddTime(CommonUtil.getDate());
//				// 是否删除 0-未删除 1-已删除
//				orderDetails.setDel(0);
//				list.add(orderDetails);
//			}
//		}
//		if (!retBool(wareInoutOrderDetailsMapper.insertBatch(list))) {
//			throw new Exception("添加商品库存详情失败");
//		}
//		// 对库存表的操作
//		for (int i = 0; i < whid.length; i++) {
//			if (!CommonUtil.isBlank(amut[i])) {
//				WareInventory wareInventory = new WareInventory();
//				// 仓库id
//				wareInventory.setWhid(whid[i]);
//				// 商品规格id
//				wareInventory.setPnid(pnid[i]);
//				wareInventory = wareInventoryMapper.selectOne(wareInventory);
//				// 商品是否已存在库存
//				boolean isinsert = false;
//				if (CommonUtil.isBlank(wareInventory)) {
//					isinsert = true;
//					wareInventory = new WareInventory();
//				}
//				// 仓库id
//				wareInventory.setWhid(whid[i]);
//				// 商品规格id
//				wareInventory.setPnid(pnid[i]);
//				// 订单类型：1-出库、2-入库
//				if (inout_order.getType() == 1) {
//					// 商品数量
//					wareInventory.setAmut(CommonUtil.int2(wareInventory.getAmut()) - CommonUtil.int2(amut[i]));
//				} else if (inout_order.getType() == 2) {
//					// 商品数量
//					wareInventory.setAmut(CommonUtil.int2(wareInventory.getAmut()) + CommonUtil.int2(amut[i]));
//				}
//				// 当前操作人
//				wareInventory.setOperator(inout_order.getOperator());
//				// 添加时间
//				wareInventory.setAddTime(CommonUtil.getDate());
//				// 是否删除 0-否 1-是 2-不能删除
//				wareInventory.setDel(0);
//
//				if (isinsert) {
//					if (!retBool(wareInventoryMapper.insert(wareInventory))) {
//						throw new Exception("添加商品库存失败");
//					}
//				} else {
//					if (!retBool(wareInventoryMapper.updateById(wareInventory))) {
//						throw new Exception("修改商品库存失败");
//					}
//				}
//
//			}
//		}
//		return true;
//	}
//
//	@Override
//	public boolean updateInoutOrder(WareInoutOrder inout_order, String wioodid[], String whid[], String pnid[], String amut[]) throws Exception {
//		// 对订单详情表的操作
//		if (!retBool(baseMapper.updateById(inout_order))) {
//			throw new Exception("修改商品出入库单失败");
//		}
//		// 修改库存
//		for (int i = 0; i < amut.length; i++) {
//			if (!CommonUtil.isBlank(wioodid[i])) {
//				WareInoutOrderDetails wareInoutOrderDetails = wareInoutOrderDetailsMapper.selectById(wioodid[i]);
//				WareInventory oldentity = new WareInventory();
//				oldentity.setPnid(wareInoutOrderDetails.getPnid());
//				oldentity.setWhid(wareInoutOrderDetails.getWhid());
//				// 查找旧仓库
//				WareInventory oldWareInventory = wareInventoryMapper.selectOne(oldentity);
//				// 减除原订单的数量
//				oldWareInventory.setAmut(oldWareInventory.getAmut() - wareInoutOrderDetails.getAmut());
//				if (!retBool(wareInventoryMapper.updateById(oldWareInventory))) {
//					throw new Exception("修改库存失败");
//				}
//				// 查找新仓库
//				WareInventory newentity = new WareInventory();
//				newentity.setPnid(pnid[i]);
//				newentity.setWhid(whid[i]);
//				WareInventory newWareInventory = wareInventoryMapper.selectOne(newentity);
//				if (!CommonUtil.isBlank(newWareInventory)) {
//					newWareInventory.setAmut(newWareInventory.getAmut() + CommonUtil.int2(amut[i]));
//					wareInventoryMapper.updateById(newWareInventory);
//				} else {
//					newWareInventory = new WareInventory();
//					newWareInventory.setAmut(CommonUtil.int2(amut[i]));
//					// 产品规格id
//					newWareInventory.setPnid(pnid[i]);
//					// 仓库id
//					newWareInventory.setWhid(whid[i]);
//					// 添加时间
//					newWareInventory.setAddTime(CommonUtil.getDate());
//					// 是否删除 0-否 1-是 2-不能删除
//					newWareInventory.setDel(0);
//					wareInventoryMapper.insert(newWareInventory);
//				}
//
//				// 修改商品详情
//				wareInoutOrderDetails.setAmut(CommonUtil.int2(amut[i]));
//				wareInoutOrderDetails.setPnid(pnid[i]);
//				wareInoutOrderDetails.setWhid(whid[i]);
//				if (!retBool(wareInoutOrderDetailsMapper.updateById(wareInoutOrderDetails))) {
//					throw new Exception("修改库存商品信息失败");
//				}
//			} else {
//				// 修改库存
//				WareInventory entity = new WareInventory();
//				entity.setPnid(pnid[i]);
//				entity.setWhid(whid[i]);
//				WareInventory wareInventory = wareInventoryMapper.selectOne(entity);
//				if (!CommonUtil.isBlank(wareInventory)) {
//					wareInventory.setAmut(wareInventory.getAmut() + CommonUtil.int2(amut[i]));
//					if (!retBool(wareInventoryMapper.updateById(wareInventory))) {
//						throw new Exception("修改库存失败");
//					}
//				} else {
//					wareInventory = new WareInventory();
//					// 商品规格id
//					wareInventory.setPnid(pnid[i]);
//					// 仓库id
//					wareInventory.setWhid(whid[i]);
//					// 数量
//					wareInventory.setAmut(CommonUtil.int2(amut[i]));
//					// 添加时间
//					wareInventory.setAddTime(CommonUtil.getDate());
//					// 是否删除 0-否 1-是 2-不能删除
//					wareInventory.setDel(0);
//					if (!retBool(wareInventoryMapper.insert(wareInventory))) {
//						throw new Exception("修改库存失败");
//					}
//				}
//
//				// 添加商品
//				WareInoutOrderDetails details = new WareInoutOrderDetails();
//				details.setAmut(CommonUtil.int2(amut[i]));
//				// 商品规格id
//				details.setPnid(pnid[i]);
//				// 仓库id
//				details.setWhid(whid[i]);
//				// 出入库单号
//				details.setIoid(inout_order.getId());
//				// 是否删除 0-否 1-是 2-不能删除
//				details.setDel(0);
//				// 添加时间
//				details.setAddTime(CommonUtil.getDate());
//				if (!retBool(wareInoutOrderDetailsMapper.insert(details))) {
//					throw new Exception("添加库存商品信息失败");
//				}
//			}
//		}
//		return true;
//	}
//
//	@Override
//	public boolean deleteInoutOrder(List<WareInoutOrder> list) throws Exception {
//		for (WareInoutOrder wareInoutOrder : list) {
//			if (!retBool(baseMapper.updateById(wareInoutOrder))) {
//				throw new Exception("删除出入库单失败");
//			}
//			Wrapper wrapper = Condition.create().eq("ioid", wareInoutOrder.getId()).ne("del", 1);
//			List<WareInoutOrderDetails> wareIODetailsList = wareInoutOrderDetailsMapper.selectList(wrapper);
//			for (WareInoutOrderDetails wareInoutOrderDetails : wareIODetailsList) {
//				// 减少库存
//				WareInventory entity = new WareInventory();
//				entity.setPnid(wareInoutOrderDetails.getPnid());
//				entity.setWhid(wareInoutOrderDetails.getWhid());
//				WareInventory wareInventory = wareInventoryMapper.selectOne(entity);
//				wareInventory.setAmut(wareInventory.getAmut() - wareInoutOrderDetails.getAmut());
//				if (!retBool(wareInventoryMapper.updateById(wareInventory))) {
//					throw new Exception("减少库存失败");
//				}
//				// 删除订单商品
//				wareInoutOrderDetails.setDel(1);
//				if (!retBool(wareInoutOrderDetailsMapper.updateById(wareInoutOrderDetails))) {
//					throw new Exception("删除出入库商品失败");
//				}
//			}
//		}
//		return true;
//	}
//
//	@Override
//	public boolean updateOutOrder(WareInoutOrder inout_order, String wioodid[], String whid[], String pnid[], String amut[]) throws Exception {
//		// 对订单详情表的操作
//		if (!retBool(baseMapper.updateById(inout_order))) {
//			throw new Exception("修改商品出入库单失败");
//		}
//		// 修改库存
//		for (int i = 0; i < amut.length; i++) {
//			if (!CommonUtil.isBlank(wioodid[i])) {
//				WareInoutOrderDetails wareInoutOrderDetails = wareInoutOrderDetailsMapper.selectById(wioodid[i]);
//				WareInventory oldentity = new WareInventory();
//				oldentity.setPnid(wareInoutOrderDetails.getPnid());
//				oldentity.setWhid(wareInoutOrderDetails.getWhid());
//				// 查找旧仓库
//				WareInventory oldWareInventory = wareInventoryMapper.selectOne(oldentity);
//				// 减除原订单的数量
//				oldWareInventory.setAmut(oldWareInventory.getAmut() + wareInoutOrderDetails.getAmut());
//				if (!retBool(wareInventoryMapper.updateById(oldWareInventory))) {
//					throw new Exception("修改库存失败");
//				}
//				// 查找新仓库
//				WareInventory newentity = new WareInventory();
//				newentity.setPnid(pnid[i]);
//				newentity.setWhid(whid[i]);
//				WareInventory newWareInventory = wareInventoryMapper.selectOne(newentity);
//				if (!CommonUtil.isBlank(newWareInventory)) {
//					newWareInventory.setAmut(newWareInventory.getAmut() - CommonUtil.int2(amut[i]));
//					wareInventoryMapper.updateById(newWareInventory);
//				} else {
//					newWareInventory = new WareInventory();
//					newWareInventory.setAmut(-CommonUtil.int2(amut[i]));
//					// 产品规格id
//					newWareInventory.setPnid(pnid[i]);
//					// 仓库id
//					newWareInventory.setWhid(whid[i]);
//					// 添加时间
//					newWareInventory.setAddTime(CommonUtil.getDate());
//					// 是否删除 0-否 1-是 2-不能删除
//					newWareInventory.setDel(0);
//					wareInventoryMapper.insert(newWareInventory);
//				}
//
//				// 修改商品详情
//				wareInoutOrderDetails.setAmut(CommonUtil.int2(amut[i]));
//				wareInoutOrderDetails.setPnid(pnid[i]);
//				wareInoutOrderDetails.setWhid(whid[i]);
//				if (!retBool(wareInoutOrderDetailsMapper.updateById(wareInoutOrderDetails))) {
//					throw new Exception("修改库存商品信息失败");
//				}
//			} else {
//				// 修改库存
//				WareInventory entity = new WareInventory();
//				entity.setPnid(pnid[i]);
//				entity.setWhid(whid[i]);
//				WareInventory wareInventory = wareInventoryMapper.selectOne(entity);
//				if (!CommonUtil.isBlank(wareInventory)) {
//					wareInventory.setAmut(wareInventory.getAmut() - CommonUtil.int2(amut[i]));
//					if (!retBool(wareInventoryMapper.updateById(wareInventory))) {
//						throw new Exception("修改库存失败");
//					}
//				} else {
//					wareInventory = new WareInventory();
//					// 商品规格id
//					wareInventory.setPnid(pnid[i]);
//					// 仓库id
//					wareInventory.setWhid(whid[i]);
//					// 数量
//					wareInventory.setAmut(-CommonUtil.int2(amut[i]));
//					// 添加时间
//					wareInventory.setAddTime(CommonUtil.getDate());
//					// 是否删除 0-否 1-是 2-不能删除
//					wareInventory.setDel(0);
//					if (!retBool(wareInventoryMapper.insert(wareInventory))) {
//						throw new Exception("修改库存失败");
//					}
//				}
//
//				// 添加商品
//				WareInoutOrderDetails details = new WareInoutOrderDetails();
//				details.setAmut(CommonUtil.int2(amut[i]));
//				// 商品规格id
//				details.setPnid(pnid[i]);
//				// 仓库id
//				details.setWhid(whid[i]);
//				// 出入库单号
//				details.setIoid(inout_order.getId());
//				// 是否删除 0-否 1-是 2-不能删除
//				details.setDel(0);
//				// 添加时间
//				details.setAddTime(CommonUtil.getDate());
//				if (!retBool(wareInoutOrderDetailsMapper.insert(details))) {
//					throw new Exception("添加库存商品信息失败");
//				}
//			}
//		}
//		return true;
//	}
//
//	@Override
//	public boolean deleteOutOrder(List<WareInoutOrder> list) throws Exception {
//		for (WareInoutOrder wareInoutOrder : list) {
//			if (!retBool(baseMapper.updateById(wareInoutOrder))) {
//				throw new Exception("删除出入库单失败");
//			}
//			Wrapper wrapper = Condition.create().eq("ioid", wareInoutOrder.getId()).ne("del", 1);
//			List<WareInoutOrderDetails> wareIODetailsList = wareInoutOrderDetailsMapper.selectList(wrapper);
//			for (WareInoutOrderDetails wareInoutOrderDetails : wareIODetailsList) {
//				// 减少库存
//				WareInventory entity = new WareInventory();
//				entity.setPnid(wareInoutOrderDetails.getPnid());
//				entity.setWhid(wareInoutOrderDetails.getWhid());
//				WareInventory wareInventory = wareInventoryMapper.selectOne(entity);
//				wareInventory.setAmut(wareInventory.getAmut() + wareInoutOrderDetails.getAmut());
//				if (!retBool(wareInventoryMapper.updateById(wareInventory))) {
//					throw new Exception("减少库存失败");
//				}
//				// 删除订单商品
//				wareInoutOrderDetails.setDel(1);
//				if (!retBool(wareInoutOrderDetailsMapper.updateById(wareInoutOrderDetails))) {
//					throw new Exception("删除出入库商品失败");
//				}
//			}
//		}
//		return true;
//	}
//}
